草庐IT

C++ ifstream 到 char *

全部标签

c++ - 使用 recv() 和 vector<unsigned char> 的更优雅的方式

到目前为止,我有这个代码示例:...intnbytes=0;vectorbuffer;buffer.resize(5000);nbytes=recv(socket,&buffer[0],buffer.size(),0);//sinceIwanttousebuffer.size()toknowdatalengthinbufferIdo...buffer.resize(nbytes);是否有另一种方法,在不使用resize()两次的情况下知道缓冲区中的数据长度?因为不可能将数据接收到未调整为适当大小的vector中。根据C++STL文档,我认为reserve()方法不进行分配。还有一个问题

c++ - 使用 recv() 和 vector<unsigned char> 的更优雅的方式

到目前为止,我有这个代码示例:...intnbytes=0;vectorbuffer;buffer.resize(5000);nbytes=recv(socket,&buffer[0],buffer.size(),0);//sinceIwanttousebuffer.size()toknowdatalengthinbufferIdo...buffer.resize(nbytes);是否有另一种方法,在不使用resize()两次的情况下知道缓冲区中的数据长度?因为不可能将数据接收到未调整为适当大小的vector中。根据C++STL文档,我认为reserve()方法不进行分配。还有一个问题

c++ - 如何使用 std::ifstream 读取具有宽字符串路径的二进制文件

我正在读取一个二进制文件:constsize_tstBuffer=256;charbuffer[stBuffer];std::wstringwPath(L"blah");std::wifstreamifs(wPath.c_str(),std::wifstream::in|std::wifstream::binary)while(ifs.good()){ifs.read(buffer,sizeof(buffer));...}但我意识到这不是真正的二进制读取。ifstream实际上读取一个字节并将其转换为宽字符。所以如果二进制文件的内容是0x112233...ff,我其实读的是0x1100

c++ - 如何使用 std::ifstream 读取具有宽字符串路径的二进制文件

我正在读取一个二进制文件:constsize_tstBuffer=256;charbuffer[stBuffer];std::wstringwPath(L"blah");std::wifstreamifs(wPath.c_str(),std::wifstream::in|std::wifstream::binary)while(ifs.good()){ifs.read(buffer,sizeof(buffer));...}但我意识到这不是真正的二进制读取。ifstream实际上读取一个字节并将其转换为宽字符。所以如果二进制文件的内容是0x112233...ff,我其实读的是0x1100

c++ - 二进制表达式 ('std::ostream' (又名 'basic_ostream<char>' )和 'const char *' 的无效操作数

已结束。此问题需要debuggingdetails.它目前不接受答案。编辑问题以包含desiredbehavior,aspecificproblemorerror,andtheshortestcodenecessarytoreproducetheproblem.这将有助于其他人回答问题。关闭5年前。Improvethisquestion在尝试使用Cheerp(使用clang++)编译我的c++代码时,我从终端得到以下输出:example.cpp:102:9:error:invalidoperandstobinaryexpression('std::ostream'(aka'basic_

c++ - 二进制表达式 ('std::ostream' (又名 'basic_ostream<char>' )和 'const char *' 的无效操作数

已结束。此问题需要debuggingdetails.它目前不接受答案。编辑问题以包含desiredbehavior,aspecificproblemorerror,andtheshortestcodenecessarytoreproducetheproblem.这将有助于其他人回答问题。关闭5年前。Improvethisquestion在尝试使用Cheerp(使用clang++)编译我的c++代码时,我从终端得到以下输出:example.cpp:102:9:error:invalidoperandstobinaryexpression('std::ostream'(aka'basic_

c++ - 如何返回在函数中创建的 char 数组?

我编程很糟糕已经有一段时间了,我才真正意识到。我之前创建了许多将字符串作为char数组(或至少指向它们的指针)返回的函数。前几天有人指出,当我的函数返回时,我的函数指向的char数组已经超出范围,我现在基本上指向的是随机的内存位(一个讨厌的悬空指针)。我有一段时间没有真正注意到这一点,因为输出到控制台时的char数组似乎没有损坏(可能是因为没有时间覆盖该数据)。然而,当我返回一个通过读取经常损坏的串行端口生成的字符串缓冲区(字符数组)时,我确实注意到了这一点。那么,我应该如何做到最好?我的错误代码如下:#include#includeusingnamespacestd;char*myB

c++ - 如何返回在函数中创建的 char 数组?

我编程很糟糕已经有一段时间了,我才真正意识到。我之前创建了许多将字符串作为char数组(或至少指向它们的指针)返回的函数。前几天有人指出,当我的函数返回时,我的函数指向的char数组已经超出范围,我现在基本上指向的是随机的内存位(一个讨厌的悬空指针)。我有一段时间没有真正注意到这一点,因为输出到控制台时的char数组似乎没有损坏(可能是因为没有时间覆盖该数据)。然而,当我返回一个通过读取经常损坏的串行端口生成的字符串缓冲区(字符数组)时,我确实注意到了这一点。那么,我应该如何做到最好?我的错误代码如下:#include#includeusingnamespacestd;char*myB

C++ char16_t 的大小取决于什么?

这也与char32_t和任何intXX_t有关。规范指出:2.14.3.2:Thevalueofachar16_tliteralcontainingasinglec-charisequaltoitsISO10646codepointvalue,providedthatthecodepointisrepresentablewithasingle16-bitcodeunit.5.3.3.1:[..]inparticular[..]sizeof(char16_t),sizeof(char32_t),andsizeof(wchar_t)areimplementation-defined我看不到

C++ char16_t 的大小取决于什么?

这也与char32_t和任何intXX_t有关。规范指出:2.14.3.2:Thevalueofachar16_tliteralcontainingasinglec-charisequaltoitsISO10646codepointvalue,providedthatthecodepointisrepresentablewithasingle16-bitcodeunit.5.3.3.1:[..]inparticular[..]sizeof(char16_t),sizeof(char32_t),andsizeof(wchar_t)areimplementation-defined我看不到